## 高阶函数
'''
def sum(data):
    a = 0
    for i in data:
        a += i
    return a

def mysum(*args):
    # 位置参数封装成一个元组
    a = []
    for i in args:
        if isinstance(i, int):
            a.append(i)
    return sum(data=a)

d = mysum(10,5,23,33, "a",55,"w")
print(d)
'''
'''
students_scores = [55, 78, 62, 90, 45, 88, 72, 60]

def is_passing(score):
    return score >= 60

# 标准函数 过滤
passing_scores = list(filter(is_passing, students_scores))
print(f"及格的学生有: {len(passing_scores)}")
'''

# 匿名函数 一句话函数 lambda
'''
lambda 参数:if符合的结果 if x > 5 else if不符合的结果
func = lambda x:True if x % 2 == 0 else False
print(func(9))

list1 = [("小a", 88),("小c",77),("小b",56)]
# 排序
list1.sort(key=lambda x:x[-1], reverse=True)
print(list1)
'''

## 闭包环境
'''
构成闭包环境的三个要素
1、外部函数会内嵌函数
2、内部函数会使用外部函数的一些变量数据
3、外部函数会将内部函数对象返回
'''

def douyin():
    number = 0
    def guanzhu(name):
        nonlocal number
        print(f'感谢{name}大哥关注')
        number += 1
        print(f"当前关注人数: {number}")
    return guanzhu # 注意这里不要加上括号

func = douyin()
func("小明")
func("小花")
func("小李")
